// 专门处理权限路由的模块
import { asyncRoutes, constantRoutes } from '@/router'
const state = {
    // 一开始  肯定拥有静态路由的权限
    // routes:[]//路由表 表示当前用户所拥有的所有路由数组
    routes: constantRoutes
}
const mutations = {
    // 定义修改routes的mutations
    satRoutes(state, newRoutes) {
        state.routes = [...constantRoutes, ...newRoutes]//每次都是在静态路由的基础上添加

    }
}
const actions = {
    // 删选权限路由
    // 第二个参数为当前用户拥有的菜单权限
    // menus:['settinss','permissions']
    // asyncRoutes是所有动态路由
    filterRoutes(context, menus) {
        // asyncRoutes.filter(item=>{
        //     menus.some(key=>key===item.name)
        // })
        // menus是所有权限点
        const routes=asyncRoutes.filter(item=>{
            return menus.include(item.name)
        })
        // const routes = []
        // // 筛选出动态路由中和menus中能够对上的路由
        // // asyncRoutes  [{path: 'setting',name: 'setting'},{}]
        // menus.forEach(key => {
        //     // key是每一个权限点的字段 拿这个 字段和asyncRoutes中每一个对象名字去对比
        //     // key就是标识
        //     // asyncRoutes 找 有没有对象中的name属性等于 
        //     //   key的 如果找不到就没权限 如果找到了 要筛选出来
        //     routes.push(...asyncRoutes.filter(item => item.name === key))
        //     // 判断有没有权限  就是item.name在menus里找到
            // 得到一个数组 有可能 有元素 也有可能是空数组
            // 得到的routes是所有模块中满足权限要求的路由数组
            // routes就是当前用户所拥有的 动态路由的权限
            context.commit('satRoutes', routes)// 将动态路由提交给mutations
            return routes
            // 这里为什么还要return  state数据 是用来 显示左侧菜单用的 
            //    return  是给路由addRoutes用的
        // })
    }
}
export default {
    namespaced: true,
    state,
    mutations,
    actions
}